package com.kinth.work.zggys;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.xml.sax.SAXException;

/**
 * 
 * <p>
 * Title: 调用PhantomJS来抓取动态网页。
 * </p>
 * <p>
 * Description: 1. 通过设置不加载照片去去除一些明显不合适的网页，得到的目前速度是处理处理慧聪网每页2s左右 2.
 * 需要加载一个js文件和调用phantomJS.所以应该需要提前装好。
 * 
 * </p>
 * 
 * @author 23192
 * @2017年3月30日
 */
public class JSUtil
{

	// 如果要更换运行环境，请注意exePath最后的phantom.exe需要更改。因为这个只能在window版本上运行。前面的路径名
	// 也需要和exePath里面的保持一致。否则无法调用
	private static String projectPath = System.getProperty("user.dir");
	private static String jsPath = projectPath + File.separator + "huicong.js";
	private static String exePath = projectPath + File.separator + "phantomjs" + File.separator + "bin" + File.separator
			+ "phantomjs.exe";

	public static void main(String[] args) throws IOException, SAXException
	{

		// 测试调用。传入url即可
		String html = getParseredHtml2("https://cn.china.cn/company/");
		System.out.println("html: " + html);
	}

	// 调用phantomjs程序，并传入js文件，并通过流拿回需要的数据。
	public static String getParseredHtml2(String url) throws IOException
	{
		Runtime rt = Runtime.getRuntime();
		Process p = rt.exec(exePath + " " + jsPath + " " + url);
		InputStream is = p.getInputStream();
		BufferedReader br = new BufferedReader(new InputStreamReader(is));
		StringBuffer sbf = new StringBuffer();
		String tmp = "";
		while ((tmp = br.readLine()) != null)
		{
			sbf.append(tmp);
		}
		System.out.println("html: "+sbf.toString());
		String[] result = sbf.toString().split("companyServiceMod");
		String result2 = "";
		if(result.length >= 2)
		{
		    result2 = result[1];
			if(result2.length() > 200)
			{
				result2 = result2.substring(0, 200);
			}
		}
		//System.out.println("resut2: "+result2);
		return result2;
	}

} 